var var_column_serialnumber='编号';
var var_currency_symbol='¥';
var var_usdollar_symbol='$';
var var_column_createUser='创建用户';
var var_column_createTime='创建时间';
var var_column_opt='操作';
var var_column_add='添加';
var var_column_insert='插入';
var var_column_save='保存';
var var_column_increase='增加';
var var_column_edit='修改';
var var_column_delete='删除';
var var_column_view='查看';
var var_del_record_required='请选择要删除的记录!';
var var_del_confirm='确定要删除吗？';
var var_del_success='删除成功!';
var var_confirm='确定';
var var_cancel='取消';
var var_excel='导出Excel';
var var_loadMsg='数据加载中请稍后...';

var var_opt_fail='操作失败，请重新再试！';
var var_alert_title='提示';

var var_mypage='我的主页';
var var_dataloading='加载中....';
var var_common_error='错误';
var var_pwd_noequal='两次输入密码不一致！';
var var_data_processing='数据处理中，请稍后....';

var var_record_editting_cantnot_increase='条明细记录正在编辑，不能增加记录。';
var var_record_editting_tip='明细记录正在编辑,请先保存!';

/** 
* 功能：在切换面板中添加标签 
* 添加面板信息,传title,url
*/ 
function addTab(title, url){  
    var navTab = $('#navTabs');
    if (navTab.tabs('exists', title)){
    	navTab.tabs('select', title);
    	var currTab = navTab.tabs('getSelected');    //获取选中的标签项
    	url = $(currTab.panel('options').content).attr('src');
    	navTab.tabs('update',{
             tab:currTab,
             options:{
                 content: createTabContent(url)
             }
         });
    } else {
    	if (url){  
    	 	navTab.tabs('add',{  
        		title:title,  
        		closable:true,
        		content:createTabContent(url)
        	}); 
    	}
    }
}

function addTab1(title, url){  
	var navTab = $('#navTabs');
    if (navTab.tabs('exists', title)){
    	navTab.tabs('select', title);
    	var currTab = navTab.tabs('getSelected');    //获取选中的标签项
    	url = $(currTab.panel('options').content).attr('src');
    	navTab.tabs('update',{
             tab:currTab,
             options:{
            	 href:url
             }
         });
    } else {
    	if (url){  
    	 	navTab.tabs('add',{  
        		title:title,  
        		closable:true,
        		href:url
        	});
    	}
    }
    $.parser.auto;   //是否自动进行渲染  
    $.parser.plugins;
    $.parser.parse(this);
}
function showBgMask(){
	$('#background-mask').css({"z-index":9999}).fadeIn();
}

function hideBgMask(){
	$('#background-mask').fadeOut();
}

function closeTab(title){
	$('#navTabs').tabs('close',title);  
}

/* 生成标签内容 */
function createTabContent(url){
	return '<iframe src="' + url + '" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%" scrolling="no"></iframe>';
   // return '<iframe style="width:100%;height:100%;overflow:hidden;" onload="Javascript:SetCwinHeight(this);" scrolling="no" frameborder="0" border="0" noresize="noresize" framespacing="0"  src="' + url + '"></iframe>';
}
//改变iframe的高度
function SetCwinHeight(obj){
	//obj.style.height = "100%";
	if (document.getElementById){ 
		if (obj && !window.opera){ 
			if (obj.contentDocument && obj.contentDocument.body.offsetHeight){ 
				obj.height = obj.contentDocument.body.offsetHeight;
				//obj.height = obj.height - 120;
				//alert(obj.height);
			}else if(obj.Document && obj.Document.body.scrollHeight){ 
				obj.height = obj.Document.body.scrollHeight; 
			} 
		} 
	} 
}

//绑定tab的双击事件、右键事件  
function bindTabEvent(){  
	$(document).on("dblclick",".tabs-inner",function(){  
        var subtitle = $(this).children("span").text();  
        if($(this).next().is('.tabs-close')){  
            $('#navTabs').tabs('close',subtitle);  
        }  
    });  
    $(document).on("contextmenu",".tabs-inner",function(e){  
    	var currtab_title = $('#mm').data("currtab");
    	$('#mm').menu('show', {  
            left: e.pageX,  
            top: e.pageY  
     });  
     var subtitle =$(this).children("span").text();  
     $('#mm').data("currtab",subtitle);  
     return false;  
    });  
 }

//绑定tab右键菜单事件  
function bindTabMenuEvent() {  
	 //刷新
    $("#m-refresh").click(function(){
        var currTab = $('#navTabs').tabs('getSelected');    //获取选中的标签项
        var url = $(currTab.panel('options').content).attr('src');    //获取该选项卡中内容标签（iframe）的 src 属性
        if(url){
        	/* 重新设置该标签 */
            $('#navTabs').tabs('update',{
                tab:currTab,
                options:{
                    content: createTabContent(url)
                }
            });
        }
    });
    
    //关闭当前  
    $('#mm-tabclose').click(function() {  
        var currtab_title = $('#mm').data("currtab");
      
        if (var_mypage != currtab_title) {  
            $('#navTabs').tabs('close', currtab_title);  
        }  
    });  
    //全部关闭  
    $('#mm-tabcloseall').click(function() {  
        $('.tabs-inner span').each(function(i, n) {  
            if ($(this).parent().next().is('.tabs-close')) {  
                var t = $(n).text();  
                $('#navTabs').tabs('close', t);  
            }  
        });  
    });  
    //关闭除当前之外的TAB  
    $('#mm-tabcloseother').click(function() {  
        var currtab_title = $('#mm').data("currtab");  
        $('.tabs-inner span').each(function(i, n) {  
            if ($(this).parent().next().is('.tabs-close')) {  
                var t = $(n).text();  
                if (t != currtab_title)  
                    $('#navTabs').tabs('close', t);  
            }  
        });  
    });  
    //关闭当前右侧的TAB  
    $('#mm-tabcloseright').click(function() {  
        var nextall = $('.tabs-selected').nextAll();  
        if (nextall.length == 0) {  
            //alert('已经是最后一个了');  
            return false;  
        }  
        nextall.each(function(i, n) {  
            if ($('a.tabs-close', $(n)).length > 0) {  
                var t = $('a:eq(0) span', $(n)).text();  
                $('#navTabs').tabs('close', t);  
            }  
        });  
        return false;  
    });  
    //关闭当前左侧的TAB  
    $('#mm-tabcloseleft').click(function() {  
        var prevall = $('.tabs-selected').prevAll();  
        if (prevall.length == 1) {  
            //alert('已经是第一个了');  
            return false;  
        }  
        prevall.each(function(i, n) {  
            if ($('a.tabs-close', $(n)).length > 0) {  
                var t = $('a:eq(0) span', $(n)).text();  
                $('#navTabs').tabs('close', t);  
            }  
        });  
        return false;  
    });  
}

/** 
 * JQuery扩展方法，用户对JQuery EasyUI的DataGrid控件进行操作。 
 */  
$.fn.extend({  
    /** 
     * 修改DataGrid对象的默认大小，以适应页面宽度。 
     * @param minWidth 最小宽度。 
     */  
    resizeDataGrid : function(minWidth) {  
        var width = $(document.body).width();  
        width = width < minWidth ? minWidth : width;  
        $(this).datagrid('resize', {  
            height : "100%",
            width : width - 10
        });  
    },
    resizeTreeGrid : function(minWidth) {  
        var width = $(document.body).width();  
        width = width < minWidth ? minWidth : width;  
        $(this).treegrid('resize', {  
            height : "100%",
            width : width
        });  
    }  
}); 

/**
 * 使panel和datagrid在加载时提示
 * 
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 */
$.fn.panel.defaults.loadingMessage = var_dataloading;
$.fn.datagrid.defaults.loadMsg = var_dataloading;

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * panel关闭时回收内存，主要用于layout使用iframe嵌入网页时的内存泄漏问题
 */
$.fn.panel.defaults.onBeforeDestroy = function() {
	var frame = $('iframe', this);
	try {
		if (frame.length > 0) {
			for ( var i = 0; i < frame.length; i++) {
				frame[i].src = '';
				frame[i].contentWindow.document.write('');
				frame[i].contentWindow.close();
			}
			frame.remove();
			if (navigator.userAgent.indexOf("MSIE") > 0) {// IE特有回收内存方法
				try {
					CollectGarbage();
				} catch (e) {
				}
			}
		}
	} catch (e) {
	}
};

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 防止panel/window/dialog组件超出浏览器边界
 * @param left
 * @param top
 */
var easyuiPanelOnMove = function(left, top) {
	var l = left;
	var t = top;
	if (l < 1) {
		l = 1;
	}
	if (t < 1) {
		t = 1;
	}
	var width = parseInt($(this).parent().css('width')) + 14;
	var height = parseInt($(this).parent().css('height')) + 14;
	var right = l + width;
	var buttom = t + height;
	var browserWidth = $(window).width();
	var browserHeight = $(window).height();
	if (right > browserWidth) {
		l = browserWidth - width;
	}
	if (buttom > browserHeight) {
		t = browserHeight - height;
	}
	$(this).parent().css({/* 修正面板位置 */
		left : l,
		top : t
	});
};
$.fn.dialog.defaults.onMove = easyuiPanelOnMove;
$.fn.window.defaults.onMove = easyuiPanelOnMove;
$.fn.panel.defaults.onMove = easyuiPanelOnMove;

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 通用错误提示
 * 
 * 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作
 */
var easyuiErrorFunction = function(XMLHttpRequest) {
	$.messager.progress('close');
	$.messager.alert(var_common_error, XMLHttpRequest.responseText);
};
$.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.tree.defaults.onLoadError = easyuiErrorFunction;
$.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;
$.fn.combobox.defaults.onLoadError = easyuiErrorFunction;
$.fn.form.defaults.onLoadError = easyuiErrorFunction;

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 为datagrid、treegrid增加表头菜单，用于显示或隐藏列，注意：冻结列不在此菜单中
 */
var createGridHeaderContextMenu = function(e, field) {
	e.preventDefault();
	var grid = $(this);/* grid本身 */
	var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */
	if (!headerContextMenu) {
		var tmenu = $('<div style="width:100px;"></div>').appendTo('body');
		var fields = grid.datagrid('getColumnFields');
		for ( var i = 0; i < fields.length; i++) {
			var fildOption = grid.datagrid('getColumnOption', fields[i]);
			//操作列不需要隐藏
			if('ck' == fields[i] || 'opt' == fields[i]){
				continue;
			}
			if (!fildOption.hidden) {
				$('<div iconCls="tick" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
			} else {
				$('<div iconCls="bullet_blue" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);
			}
		}
		headerContextMenu = this.headerContextMenu = tmenu.menu({
			onClick : function(item) {
				var field = $(item.target).attr('field');
				if (item.iconCls == 'tick') {
					grid.datagrid('hideColumn', field);
					$(this).menu('setIcon', {
						target : item.target,
						iconCls : 'bullet_blue'
					});
				} else {
					grid.datagrid('showColumn', field);
					$(this).menu('setIcon', {
						target : item.target,
						iconCls : 'tick'
					});
				}
			}
		});
	}
	headerContextMenu.menu('show', {
		left : e.pageX,
		top : e.pageY
	});
};
$.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;
$.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;

/**
 * grid tooltip参数
 * 
 * @author 孙宇
 */
var gridTooltipOptions = {
	tooltip : function(jq, fields) {
		return jq.each(function() {
			var panel = $(this).datagrid('getPanel');
			if (fields && typeof fields == 'object' && fields.sort) {
				$.each(fields, function() {
					var field = this;
					bindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));
				});
			} else {
				bindEvent($(".datagrid-body .datagrid-cell", panel));
			}
		});

		function bindEvent(jqs) {
			jqs.mouseover(function() {
				var content = $(this).text();
				if (content.replace(/(^\s*)|(\s*$)/g, '').length > 5) {
					$(this).tooltip({
						content : content,
						trackMouse : true,
						position : 'bottom',
						onHide : function() {
							$(this).tooltip('destroy');
						},
						onUpdate : function(p) {
							var tip = $(this).tooltip('tip');
							if (parseInt(tip.css('width')) > 500) {
								tip.css('width', 500);
							}
						}
					}).tooltip('show');
				}
			});
		}
	}
};
/**
 * Datagrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+
 * 
 * 简单实现，如需高级功能，可以自由修改
 * 
 * 使用说明:
 * 
 * 在easyui.min.js之后导入本js
 * 
 * 代码案例:
 * 
 * $("#dg").datagrid('tooltip'); 所有列
 * 
 * $("#dg").datagrid('tooltip',['productid','listprice']); 指定列
 * 
 * @author 夏悸
 */
$.extend($.fn.datagrid.methods, gridTooltipOptions);

/**
 * Treegrid扩展方法tooltip 基于Easyui 1.3.3，可用于Easyui1.3.3+
 * 
 * 简单实现，如需高级功能，可以自由修改
 * 
 * 使用说明:
 * 
 * 在easyui.min.js之后导入本js
 * 
 * 代码案例:
 * 
 * $("#dg").treegrid('tooltip'); 所有列
 * 
 * $("#dg").treegrid('tooltip',['productid','listprice']); 指定列
 * 
 * @author 夏悸
 */
$.extend($.fn.treegrid.methods, gridTooltipOptions);

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 扩展validatebox，添加验证两次密码功能
 */
$.extend($.fn.validatebox.defaults.rules, {
	eqPwd : {
		validator : function(value, param) {
			return value == $(param[0]).val();
		},
		message : var_pwd_noequal
	},
	remoteValid : {
		validator : function(value, param) {
			if(param[3] && value == param[3]){
				return true;
			}
			var postdata = {};  
			postdata[param[1]] = value;  
			var m_result = $.ajax({
				type: "post",     //http请求方式  
	            url: param[0],    //服务器段url地址  
	            data:postdata,    //发送给服务器段的数据  
	            dataType: "type", //告诉JQuery返回的数据格式  
	            async: false 
	        }).responseText;
			m_result = JSON.parse(m_result);
	        if (m_result.checkFlag == false) { 
	        	$.fn.validatebox.defaults.rules.remoteValid.message = param[2];  
	            return false;  
	        }
	        else {  
	            return true;  
	        }
        },
        message: ''
	},
	remoteValidEidt : {
		validator : function(value, param) {
			var postdata = {};  
			postdata[param[1]] = param[3];  
			var m_result = $.ajax({
				type: "post",     //http请求方式  
	            url: param[0],    //服务器段url地址  
	            data:postdata,    //发送给服务器段的数据  
	            dataType: "type", //告诉JQuery返回的数据格式  
	            async: false 
	        }).responseText;
			m_result = JSON.parse(m_result);
	        if (m_result.checkFlag == false) { 
	        	$.fn.validatebox.defaults.rules.remoteValid.message = param[2];  
	            return false;  
	        }
	        else {  
	            return true;  
	        }
        },
        message: ''
	},
	remoteValidTwo : {
		validator : function(value, param) {
			if((param[5] && value == param[5]) && (param[4] && $.trim($("#"+param[1]).val()) == param[4])){
				return true;
			}

			var postdata = {};  
			postdata[param[1]] = $.trim($("#"+param[1]).val());
			postdata[param[2]] = value;
			var m_result = $.ajax({
				type: "post",     //http请求方式  
	            url: param[0],    //服务器段url地址  
	            data:postdata,    //发送给服务器段的数据  
	            dataType: "type", //告诉JQuery返回的数据格式  
	            async: false 
	        }).responseText;
			m_result = JSON.parse(m_result);
	        if (m_result.checkFlag == false) { 
	        	$.fn.validatebox.defaults.rules.remoteValidTwo.message = param[3];  
	            return false;  
	        }
	        else {  
	            return true;  
	        }
        },
        message: ''
	}
});

/**
 * @author 夏悸
 * 
 * @requires jQuery,EasyUI
 * 
 * 扩展tree，使其可以获取实心节点
 */
$.extend($.fn.tree.methods, {
	getCheckedExt : function(jq) {// 获取checked节点(包括实心)
		var checked = $(jq).tree("getChecked");
		var checkbox2 = $(jq).find("span.tree-checkbox2").parent();
		$.each(checkbox2, function() {
			var node = $.extend({}, $.data(this, "tree-node"), {
				target : this
			});
			checked.push(node);
		});
		return checked;
	},
	getSolidExt : function(jq) {// 获取实心节点
		var checked = [];
		var checkbox2 = $(jq).find("span.tree-checkbox2").parent();
		$.each(checkbox2, function() {
			var node = $.extend({}, $.data(this, "tree-node"), {
				target : this
			});
			checked.push(node);
		});
		return checked;
	}
});

/**
 * @author 夏悸
 * 
 * @requires jQuery,EasyUI
 * 
 * 扩展tree，使其支持平滑数据格式
 */
$.fn.tree.defaults.loadFilter = function(data, parent) {
	var opt = $(this).data().tree.options;
	var idFiled, textFiled, parentField;
	if (opt.parentField) {
		idFiled = opt.idFiled || 'id';
		textFiled = opt.textFiled || 'text';
		parentField = opt.parentField;
		var i, l, treeData = [], tmpMap = [];
		for (i = 0, l = data.length; i < l; i++) {
			tmpMap[data[i][idFiled]] = data[i];
		}
		for (i = 0, l = data.length; i < l; i++) {
			if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
				if (!tmpMap[data[i][parentField]]['children'])
					tmpMap[data[i][parentField]]['children'] = [];
				data[i]['text'] = data[i][textFiled];
				tmpMap[data[i][parentField]]['children'].push(data[i]);
			} else {
				data[i]['text'] = data[i][textFiled];
				treeData.push(data[i]);
			}
		}
		return treeData;
	}
	return data;
};

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 扩展treegrid，使其支持平滑数据格式
 */
$.fn.treegrid.defaults.loadFilter = function(data, parentId) {
	var opt = $(this).data().treegrid.options;
	var idFiled, textFiled, parentField;
	if (opt.parentField) {
		idFiled = opt.idFiled || 'id';
		textFiled = opt.textFiled || 'text';
		parentField = opt.parentField;
		var i, l, treeData = [], tmpMap = [];
		for (i = 0, l = data.length; i < l; i++) {
			tmpMap[data[i][idFiled]] = data[i];
		}
		for (i = 0, l = data.length; i < l; i++) {
			if (tmpMap[data[i][parentField]] && data[i][idFiled] != data[i][parentField]) {
				if (!tmpMap[data[i][parentField]]['children'])
					tmpMap[data[i][parentField]]['children'] = [];
				data[i]['text'] = data[i][textFiled];
				tmpMap[data[i][parentField]]['children'].push(data[i]);
			} else {
				data[i]['text'] = data[i][textFiled];
				treeData.push(data[i]);
			}
		}
		return treeData;
	}
	return data;
};

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 扩展combotree，使其支持平滑数据格式
 */
$.fn.combotree.defaults.loadFilter = $.fn.tree.defaults.loadFilter;

/**
 * @author 孙宇
 * 
 * @requires jQuery,EasyUI
 * 
 * 创建一个模式化的dialog
 * 
 * @returns $.modalDialog.handler 这个handler代表弹出的dialog句柄
 * 
 * @returns $.modalDialog.xxx 这个xxx是可以自己定义名称，主要用在弹窗关闭时，刷新某些对象的操作，可以将xxx这个对象预定义好
 */
$.modalDialog = function(options) {
	if ($.modalDialog.handler == undefined) {// 避免重复弹出
		var opts = $.extend({
			title : '',
			width : 840,
			/*height : 680,*/
			modal : true,
			onClose : function() {
				$.modalDialog.handler = undefined;
				$(this).dialog('destroy');
			},
			onOpen : function() {
				parent.$.messager.progress({
					title : var_alert_title,
					text : var_data_processing
				});
			}
		}, options);
		opts.modal = true;// 强制此dialog为模式化，无视传递过来的modal参数
		return $.modalDialog.handler = $('<div/>').dialog(opts);
	}
};

//扩展可能需要弹出两层Dialog的情况
$.modalDialog2 = function(options) {
	if ($.modalDialog2.handler == undefined) {// 避免重复弹出
		var opts = $.extend({
			title : '',
			width : 840,
			height : 680,
			modal : true,
			onClose : function() {
				$.modalDialog2.handler = undefined;
				$(this).dialog('destroy');
			},
			onOpen : function() {
				parent.$.messager.progress({
					title : var_alert_title,
					text : var_data_processing
				});
			}
		}, options);
		opts.modal = true;// 强制此dialog为模式化，无视传递过来的modal参数
		return $.modalDialog2.handler = $('<div/>').dialog(opts);
	}
};

/**
 * Ajax请求公共错误处理方法
 */
function commonAjaxError(){
	$.messager.alert(var_alert_title,var_opt_fail,'error');
}
/*初始化项目全局变量*/
erp = window.erp = {};